package com.nuedu.corejava.ch9;

public class PackageClass {
	public static void main(String[] args) {

		// java为8中基本数据类型提供了以个包装类
		// 包装类的主要用途是完成基本数据类型和字符串间的互相转换或在基本数据类型间转换，提供了一些重要的属性

		// 1.布尔值与布尔类型的转换
		boolean bool = true;
		String str = "" + bool;// 把boolean值转换成字符串
		Boolean boolean1 = new Boolean(bool);

		str = boolean1.toString();// 从包转类转换为字符串
		boolean bool2 = boolean1.booleanValue();

		bool2 = Boolean.getBoolean("false");// 把字符串转换成Boolean；

		Boolean bool3 = Boolean.valueOf("true");
		boolean bool4 = Boolean.valueOf("true");// 把包转类对象转换成原始数据类型的过程，称之为拆箱
		bool4 = bool3;// 把包转类(Boolean类型)的对象直接赋值给原始数据类型（boolean类型）的过程——自动拆箱

		// 把原始数据类型转换成包转类对象的过程 - 装修箱
		Boolean boolean2 = bool4;// 把原始数据类型直接赋值给包装类对象的过程 - 自动装箱；
		boolean2 = new Boolean(false);
		boolean2 = new Boolean("false");

		// int 类型的转换
		int i = 100;
		String intString = "100";

		// 把数字或字符串转换成包装类
		Integer integer = new Integer(i);// 把数字转换成包转类 - 装箱
		integer = integer.valueOf(i);// - 装箱
		integer = i;// 自动装箱

		integer = new Integer(intString);// 把数字字符串转换为包转类
		integer = integer.valueOf(intString);

		// 把数字字符串转换成数字
		int ii = integer.parseInt(intString);
		ii = integer.intValue();// 通过方法拆箱
		ii = integer;// 自动拆箱

		long l = integer.longValue();// 在不同数据类型间的转换
		short s = integer.shortValue();
		byte b = integer.byteValue();
		float f = integer.floatValue();
		double d = integer.doubleValue();
		// 注意数据类型间的转换不包含char类型

		char c = 'a';
		Character character = new Character(c);
		String string = character.toString();
		// string = '中'；--字符类型不能直接赋值给字符串类型；

		string = String.valueOf(c);

		// 使用integer.parseInt进行数据转换时，可以指定数值的进制：十进制，二进制，八进制，十六进制
		/*
		 * integer.parseInt("0", 10);// returns 0 integer.parseInt("473", 10);// returns
		 * 473 integer.parseInt("+42", 10);// returns 42 integer.parseInt("-0", 10);//
		 * returns 0
		 * 
		 * integer.parseInt("-FF", 16);// returns -255 integer.parseInt("1100110", 2);//
		 * returns 102 integer.parseInt("2147483647", 10);// returns 2147483647
		 * integer.parseInt("-2147483648", 10);// returns -2147483648
		 * integer.parseInt("2147483648", 10);// throws a NumberFormatException
		 * integer.parseInt("99", 8);// throws a NumberFormatException
		 * integer.parseInt("Kona", 10);// throws a NumberFormatException
		 * integer.parseInt("Kona", 27);// returns 411787
		 */

		int k = Integer.parseInt("90", 10);// 10进制->10进制
		System.out.println(k);
		k = Integer.parseInt("90", 16);// 16进制->10进制
		System.out.println(k);
		k = Integer.parseInt("70", 8);// 8进制->10进制
		System.out.println(k);
		k = Integer.parseInt("11001101", 2);// 2进制->10进制
		System.out.println(k);
		k = Integer.parseInt("Kono", 27);// 27进制->10进制
		System.out.println(k);

	}

}
